package ar.uba.fi.taller2.cmmiassistant.frontend.evidencias;

import javax.swing.JButton;
import javax.swing.JPanel;

import ar.uba.fi.taller2.cmmiassistant.controlador.Controlador;
import ar.uba.fi.taller2.cmmiassistant.frontend.FrameVista;
import ar.uba.fi.taller2.cmmiassistant.frontend.PanelVista;
import ar.uba.fi.taller2.cmmiassistant.frontend.adaptadores.tabla.TableModelAsociaciones;
import ar.uba.fi.taller2.cmmiassistant.frontend.adaptadores.tabla.TableModelEvidencias;
import ar.uba.fi.taller2.cmmiassistant.vista.Estado;
import ar.uba.fi.taller2.cmmiassistant.vista.Vista;

import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.BorderLayout;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.event.KeyEvent;
import java.awt.CardLayout;
import javax.swing.JSplitPane;

public class AsociandoEvidencias extends PanelVista {

    private static final long serialVersionUID = 1640852885932662402L;

    private JScrollPane scrollPaneTableAsociaciones = null;
    private JPanel panelInferior = null;
    
    private JTable tableAsociaciones = null;
    private TableModelAsociaciones tableModelAsociaciones;

	private JButton buttonNueva = null;

	private JPanel panelBotones = null;

	private JButton buttonModificar = null;

	private JButton buttonBorrar = null;

	private JSplitPane panelCentral = null;

	private JScrollPane scrollPaneTableEvidencias = null;

	private JTable tableEvidencias = null;

	private TableModelEvidencias tableModelEvidencias;

	
	/**
	 * This is the default constructor
	 */
	public AsociandoEvidencias(Vista contexto) {
		super(contexto);
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {

		this.setSize(565, 519);
		this.setLayout(new BorderLayout());
		this.add(crearLabelTitulo("Asociaciones"), BorderLayout.NORTH);
		this.add(getPanelInferior(), BorderLayout.SOUTH);
		this.add(getPanelCentral(), BorderLayout.CENTER);
	}

	public Estado getEstado() {

        return Estado.ASOCIANDO_EVIDENCIAS;
    }

	/**
	 * This method initializes panelInferior	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getPanelInferior() {
		if (panelInferior == null) {

			this.panelInferior = new JPanel();
			panelInferior.setLayout(new CardLayout());
			panelInferior.setPreferredSize(new Dimension(0, 30));
			panelInferior.add(getPanelBotones(), getPanelBotones().getName());
		}
		return panelInferior;
	}

	/**
	 * This method initializes scrollPaneTableAsociaciones	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getScrollPaneTableAsociaciones() {
		if (scrollPaneTableAsociaciones == null) {
			scrollPaneTableAsociaciones = new JScrollPane();
			scrollPaneTableAsociaciones.setName("scrollPaneTableAsociaciones");
			scrollPaneTableAsociaciones.setViewportView(getTableAsociaciones());
		}
		return scrollPaneTableAsociaciones;
	}

	/**
	 * This method initializes tableAsociaciones	
	 * 	
	 * @return javax.swing.JTable	
	 */
	public JTable getTableAsociaciones() {
		if (tableAsociaciones == null) {
			tableAsociaciones = new JTable();
			tableAsociaciones.setName("tableAsociaciones");
			this.tableAsociaciones.setModel(this.getTableModelAsociaciones());

		}
		return tableAsociaciones;
	}

	public TableModelAsociaciones getTableModelAsociaciones(){
		
		if (this.tableModelAsociaciones == null) {
			
			this.tableModelAsociaciones = new TableModelAsociaciones();
		}
		
		return this.tableModelAsociaciones;
	}

	/**
	 * This method initializes scrollPaneTableEvidencias	
	 * 	
	 * @return javax.swing.JScrollPane	
	 */
	private JScrollPane getScrollPaneTableEvidencias() {
		if (scrollPaneTableEvidencias == null) {
			scrollPaneTableEvidencias = new JScrollPane();
			scrollPaneTableEvidencias.setViewportView(getTableEvidencias());
		}
		return scrollPaneTableEvidencias;
	}

	/**
	 * This method initializes tableEvidencias	
	 * 	
	 * @return javax.swing.JTable	
	 */
	public JTable getTableEvidencias() {
		if (tableEvidencias == null) {
			tableEvidencias = new JTable();
			tableEvidencias.setModel(this.getTableModelEvidencias());
		}
		return tableEvidencias;
	}
	
	public void setControlador(Controlador controlador) {
		
		super.setControlador(controlador);
		this.getTableModelAsociaciones().setControlador(controlador);
		this.getTableModelEvidencias().setControlador(controlador);
	}

	/**
	 * This method initializes buttonNueva	
	 * 	
	 * @return javax.swing.JButton	
	 */
	public JButton getButtonNueva() {
		if (buttonNueva == null) {
			buttonNueva = new JButton();
			buttonNueva.setMnemonic(KeyEvent.VK_UNDEFINED);
			buttonNueva.setText("Nueva");
			buttonNueva.setPreferredSize(new Dimension(34, 200));
		}
		return buttonNueva;
	}

	/**
	 * This method initializes panelBotones	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getPanelBotones() {
		if (panelBotones == null) {
			GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
			gridBagConstraints3.gridx = 2;
			gridBagConstraints3.gridy = 0;
			GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
			gridBagConstraints2.gridx = 1;
			gridBagConstraints2.gridy = 0;
			panelBotones = new JPanel();
			panelBotones.setLayout(new GridBagLayout());
			panelBotones.setPreferredSize(new Dimension(34, 30));
			panelBotones.setName("panelBotones");
			panelBotones.add(getButtonNueva(), new GridBagConstraints());
			panelBotones.add(getButtonModificar(), gridBagConstraints2);
			panelBotones.add(getButtonBorrar(), gridBagConstraints3);
		}
		return panelBotones;
	}

	/**
	 * This method initializes buttonModificar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	public JButton getButtonModificar() {
		if (buttonModificar == null) {
			buttonModificar = new JButton();
			buttonModificar.setText("Modificar");
		}
		return buttonModificar;
	}

	/**
	 * This method initializes buttonBorrar	
	 * 	
	 * @return javax.swing.JButton	
	 */
	public JButton getButtonBorrar() {
		if (buttonBorrar == null) {
			buttonBorrar = new JButton();
			buttonBorrar.setText("Borrar");
		}
		return buttonBorrar;
	}

	/**
	 * This method initializes panelCentral	
	 * 	
	 * @return javax.swing.JSplitPane	
	 */
	private JSplitPane getPanelCentral() {
		if (panelCentral == null) {
			panelCentral = new JSplitPane();
			panelCentral.setName("panelCentral");
			panelCentral.setDividerLocation(300);
			panelCentral.setOrientation(JSplitPane.VERTICAL_SPLIT);
			panelCentral.setBottomComponent(getScrollPaneTableAsociaciones());
			panelCentral.setTopComponent(getScrollPaneTableEvidencias());
		}
		return panelCentral;
	}

	public static void main(String[] args){
		
		FrameVista frame = new FrameVista();
		frame.setSize(800,600);
		AsociandoEvidencias panel = new AsociandoEvidencias(frame);
		
		frame.add(panel);
		
		
		frame.setVisible(true);
	}
	
	public TableModelEvidencias getTableModelEvidencias() {
		
		if (this.tableModelEvidencias == null) {
			
			this.tableModelEvidencias = new TableModelEvidencias();
			
		}

		return this.tableModelEvidencias;
	}
}  //  @jve:decl-index=0:visual-constraint="11,10"
